{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "import keras\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "from PIL import Image\n",
    "from model import get_model\n",
    "import matplotlib.pyplot as plt\n",
    "from scripts.pre_process import load_data_batch, preprocess"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Create the training and testing data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "channel = 1\n",
    "im_size = 100\n",
    "path = 'data'\n",
    "im_path = path + '/images/'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "train_size = 40000\n",
    "test_size = 10000\n",
    "\n",
    "train_ids = np.arange(train_size)\n",
    "test_ids = np.arange(train_size) + train_size\n",
    "\n",
    "x_train, y1_train, y2_train = load_data_batch(train_ids, len(train_ids), channel, im_size, path)\n",
    "\n",
    "x_test, y1_test, y2_test = load_data_batch(test_ids, len(test_ids), channel, im_size, path)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Train model from scratch"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "model = get_model()\n",
    "\n",
    "adam = keras.optimizers.adam(lr=.001)\n",
    "model.compile(loss=['sparse_categorical_crossentropy', 'mse'], optimizer=adam, metrics=['accuracy', 'mae'])\n",
    "\n",
    "model.fit(x_train, [y1_train, y2_train], epochs=1, batch_size=256, validation_data=(x_test, [y1_test, y2_test]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Or load pretrained model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "model = keras.models.load_model('model/clock.model')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Testing"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "def predict(ind):        \n",
    "        \n",
    "    im = Image.open(im_path + str(ind) + '.jpg')\n",
    "    plt.imshow(im)\n",
    "    print('Input image:')\n",
    "    plt.show()\n",
    "    im = im.convert('L')\n",
    "    im = im.resize((im_size,im_size), Image.ANTIALIAS)\n",
    "    im = np.array(im)\n",
    "    im = preprocess(im).reshape((1, im_size, im_size, channel))\n",
    "\n",
    "    time = model.predict(im)\n",
    "    \n",
    "    hour = np.argmax(time[0])\n",
    "    minute = int(time[1][0][0]*60)\n",
    "    print('Detected Time:', str(hour)+':'+str(minute))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Input image:\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Detected Time: 8:9\n"
     ]
    }
   ],
   "source": [
    "predict(test_ids[33])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
